1. Field of the Invention
This invention relates in general to systems and methods for designing, developing and programming field programmable gate arrays (FPGAs), and in particular to automated systems and methods for designing, developing and programming FPGAs to implement a user-written algorithm specified in a high-level language for processing data vectors with one, two or more dimensions, such as often are found in image processing and other computationally intense applications.
2. Discussion
There are known benefits of using FPGAs for embedded machine vision or other image processing applications. These include processing image data at high frame rates, converting and mapping the data and performing image segmentation functions that were all previously handled by dedicated, proprietary processors. FPGAs are well-known for having a much greater power to process images, on the order of 10 to 100 times that of conventional advanced microprocessors of comparable size. This is in part a function of the fully programmed FPGA being set up as a dedicated circuit designed to perform specific tasks and essentially nothing else.
Another benefit of FPGAs is their low power consumption and low weight. FPGAs are very suitable for embedded avionic applications, in-the-field mobile vision applications and severe-duty applications, such as mobile vehicles, including those which are off-road, where severe bumps and jolts are commonplace. These applications are very demanding in that they have severe space, weight, and power constraints. Modern FPGAs now have the processing capacity on a par with dedicated application-specific integrated circuits (ASICs), and are or can be made very rugged.
FPGAs have grown in popularity because they can be programmed to implement particular logic operations and reprogrammed easily as opposed to an application specific integrated circuit (hereafter ASIC) where the functionality is fixed in silicon. But this very generic nature of FPGAs, deliberately made so they can be used in many different applications, is also a drawback due to the many difficulties associated with efficiently and quickly taking a high level design specified by a user, and translating it into a practical hardware design that meets all applicable timing, floor plan and power requirements so that it will run successfully upon the target FPGA. As is well-known, a high level user-generated design is typically specified by a sequence of matrix array or mathematic operations, including local pixel neighborhood operations (such as erosion, dilation, edge detection, determination of medial axis, etc.) and other forms of arithmetic or Boolean operations (e.g., addition, multiplication; accumulation; exclusive-OR, etc.), lookup table and shift register functions, and other functions like convolution, autocorrelation, and the like. In order to be able to handle all of this diverse logic, the individual logic blocks used in the FPGAs are made to be fairly generic.
The problem in supporting all these applications and functions is how to design reconfigurable hardware resources that provide the most effective use of general purpose FPGA silicon for the specific image processing tasks to which a given FPGA is put to use. FPGAs are by their very nature general purpose circuits that can be programmed to perform many different functions, such as digital signal processing used in wireless communication, encryption and decryption for communications over the Internet, etc.
One expected benefit of FPGAs, since they are reprogrammable, is that they would help eliminate the cost/risk of ASIC development. One of the few things really holding back the larger use of FPGAs in vision applications has been the difficulty in translating desired user-defined image processing algorithms into hardware, and the difficulty of updating those algorithms once they are in hardware. If there were a development system for the design and programming of FPGAs that greatly simplified the development of an image processing algorithm or other sequence of desired operations into the bitstream coding required to program FPGAs, this might well open up opportunities for wider use of FPGAs in such applications as medical, automotive collision avoidance and commercial video.
For example, in the medical area, many medical imaging techniques have extremely high processing requirements. FPGAs, assuming that they can be programmed with the desired sequence of complex image processing steps, should produce smaller, faster and less expensive versions of existing image processing devices that presently require ASIC devices be developed. In addition, many new applications will become possible for the first time, because FPGAs can give speedups of one, two and even three orders of magnitude over PCs, at a reasonable price. Automotive vision applications that are on the horizon include proposals to help enhance driver situational awareness. Possible automotive vision applications include systems to assist with lane-changes, to provide backup obstacle warnings, and to provide forward collision warnings.
Commercial video FPGAs, if they were much easier to design, program and test, would likely find much wider use in video transcoders, compression, encryption and standards support, particularly in areas like MPEG-4. Many video applications are already being done with FPGAs, but the design, development and testing of such FPGAs is at present very labor-intensive in terms of designer and engineering services, which drives up unit costs and slows down the transfer of proposed designs into actual commercial embodiments.